#ifndef _POSIX_H_
#define _POSIX_H_

#include "share/transceiver.h"

#ifdef __cplusplus
extern "C" {
#endif

// posix.c 实现了以下这些 POSIX 标准 API 接口
// int _gettimeofday(struct timeval *tv, void *tzvp);
// int _link(const char *path1, const char *path2);
// int _unlink(const char *path);
// int open(const char *pathname, int flags, ...);
// int _open(const char *pathname, int flags, ...);
// int _close(int fd);
// ssize_t _read(int fd, unsigned char *buf, size_t count);
// ssize_t _write(int fd, const void *buf, size_t count);
// int fsync(int fd);
// int	_stat(const char *path, struct stat *st);
// off_t _lseek(s32 fd, off_t offset, s32 whence);
// off_t lseek(s32 fd, off_t offset, s32 whence);

// 初始化 POSIX-FatFS 适配层
std_err_t posix_fatfs_init();
// 把 FatFS 错误码转换为错误码
const char* fatfs_err_comment(int err);

// 设置指定的收发器做为 stdin/stdout/stderr
void posix_set_std_transceiver(transceiver_t *trx);
// 获取当前 stdin/stdout/stderr 使用的收发器
transceiver_t* posix_get_std_transceiver();

// 设置指定的收发器做为日志输出的收发器
void posix_set_log_transceiver(transceiver_t *trx);
// 获取当前日志输出的收发器
transceiver_t* posix_get_log_transceiver();

// 获取 FatFS API 接口错误码对应的错误信息
//const char* fatfs_err_comment(int err);
// 为 xilffs 库提供的获取当前系统时间的函数，见: ff.c/GET_FATTIME(), diskio.c/get_fattime()
//unsigned long get_fattime( void );

#ifdef __cplusplus
} // extern "C"
#endif

#endif // _POSIX_H_
